<?php
class Usuario_model extends CI_Model{

    function  __construct() {
        parent::__construct();
        $this->load->helper('security');
        $this->load->library('session');
        $this->load->helper('cookie');
        $this->load->library('encrypt');
    }
    
    function create()
    {
        $senha      = $this->input->post('senha');
        $senha      = $this->encrypt->sha1($senha);
        
        $data = array(
            'Cidade_idCidade'   => $this->input->post('cidade', TRUE),
            'nome'              => $this->input->post('nome', TRUE),
            'username'          => $this->input->post('username', TRUE),
            'email'             => $this->input->post('email', TRUE),
            'senha'             => $senha,
            'bio'               => $this->input->post('bio', TRUE),
            'cep'               => $this->input->post('cep', TRUE),
            'bairro'            => $this->input->post('bairro', TRUE),
            'facebook'          => $this->input->post('facebook', TRUE),
            'twitter'           => $this->input->post('twitter', TRUE),
            'orkut'             => $this->input->post('orkut', TRUE),
            'create_time'       => now()
        );
        
        $this->db->insert('usuario', $data);
        return $this->db->insert_id();
      }

    function update()
    {
        $idUsuario = $this->session->userdata('idUsuario');
        $senha      = $this->input->post('novasenha');
        $senha      = $this->encrypt->sha1($senha);
        
        
        if($this->input->post('novasenha', TRUE) != "")
        {
            $data = array(
                'Cidade_idCidade'   => $this->input->post('cidade', TRUE),
                'nome'              => $this->input->post('nome', TRUE),
                'username'          => $this->input->post('username', TRUE),
                'senha'             => $senha,
                'email'             => $this->input->post('email', TRUE),
                'bio'               => $this->input->post('bio', TRUE),
                'cep'               => $this->input->post('cep', TRUE),
                'bairro'            => $this->input->post('bairro', TRUE),
                'facebook'          => $this->input->post('facebook', TRUE),
                'twitter'           => $this->input->post('twitter', TRUE),
                'orkut'             => $this->input->post('orkut', TRUE),
                'update_time'       => now()
            );
        }
        else
        {
            $data = array(
                'Cidade_idCidade'   => $this->input->post('cidade', TRUE),
                'nome'              => $this->input->post('nome', TRUE),
                'username'          => $this->input->post('username', TRUE),
                'email'             => $this->input->post('email', TRUE),
                'bio'               => $this->input->post('bio', TRUE),
                'cep'               => $this->input->post('cep', TRUE),
                'bairro'            => $this->input->post('bairro', TRUE),
                'facebook'          => $this->input->post('facebook', TRUE),
                'twitter'           => $this->input->post('twitter', TRUE),
                'orkut'             => $this->input->post('orkut', TRUE),
                'update_time'       => now()
            );
        }
       $this->db->update('usuario', $data, array('idUsuario'=>$idUsuario));
    }

    function get_all()
    {
       $query = $this->db->get('usuario');

        if (isset($query))
        {
            return $query->result();
        }
        else
        {
            return array();
        }
    }

    public function get_by_id($idUsuario)
    {
        $idUsuario = intval($idUsuario);

        $query = $this->db->where('idUsuario', $idUsuario)->limit(1)->get('usuario');

        if($query->num_rows() > 0)
        {
            return $query->result();
        }
        else
        {
            return FALSE;
        }
    }
    
    public function get_avatar_by_id($idUsuario)
    {
        $idUsuario = intval($idUsuario);

        $query = $this->db->select('idUsuario, avatar, username')->where('idUsuario', $idUsuario)->limit(1)->get('usuario');

        if($query->num_rows() > 0)
        {
            return $query->result();
        }
        else
        {
            return FALSE;
        }
    }
    
    function delete($idUsuario)
    {
       $this->db->delete('usuario', array('idUsuario'=>$idUsuario));
    }
    
    function follow($idSeguidor, $idSeguido)
    {
        $query  = $this->db->where(array('idSeguido' => $idSeguido, 'idSeguidor' => $idSeguidor))->get('usuario_has_usuario');
        $row    = $query->result();
        
        if(isset($row[0]->idUsuario_has_usuario))
        {
            $this->db->where('idUsuario_has_usuario', $row[0]->idUsuario_has_usuario)->update('usuario_has_usuario', array('estado' => 'Y'));
            return TRUE;
        }
        else
        {
            $data = array(
                    'idSeguidor'   => $idSeguidor,
                    'idSeguido'    => $idSeguido,
                    'create_time'  => now()
                    );

           if($this->db->insert('usuario_has_usuario', $data))
           {
               return TRUE;
           }
           else
           {
               return FALSE;
           }
        }
    }
    
    function unfollow($idSeguidor, $idSeguido)
    {
        if($this->db->where(array('idSeguido' => $idSeguido, 'idSeguidor' => $idSeguidor))->update('usuario_has_usuario', array('estado' => 'N')))
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    
    function get_all_followers($idUsuario)
    {
        $query = $this->db->select('idSeguidor')->where(array('idSeguido' => $idUsuario, 'estado' => 'Y'))->limit(5)->get('usuario_has_usuario');

        if($query->num_rows() > 0)
        {
            $data['ids'] = $query->result();
            $data['count'] = $query->num_rows();
            return $data;
        }
        else
        {
            return FALSE;
        }
    }
    
    function get_all_following($idUsuario)
    {
        $query = $this->db->select('idSeguido')->where(array('idSeguidor' => $idUsuario, 'estado' => 'Y'))->limit(5)->get('usuario_has_usuario');

        if($query->num_rows() > 0)
        {
            $data['ids'] = $query->result();
            $data['count'] = $query->num_rows();
            return $data;
        }
        else
        {
            return FALSE;
        }
    }
    
    function busca_senha($idUsuario)
    {
        $idUsuario = intval($idUsuario);
        
        $query = $this->db->select('senha')->where('idUsuario', $idUsuario)->limit(1)->get('usuario');
        
        if($query->num_rows() > 0)
        {
            return $query->row();
        }
        else
        {
            return FALSE;
        }
        
    }
    
    function busca_email($email)
    {
        $query = $this->db->select('idUsuario, senha')->where('email', $email)->limit(1)->get('usuario');
        
        if($query->num_rows() > 0)
        {
            return $query->row();
        }
        else
        {
            return FALSE;
        }
        
    }
    
    function busca_username($username)
    {
        $query = $this->db->select('idUsuario')->where('username', $username)->limit(1)->get('usuario');
       
        if($query->num_rows() > 0)
        {
            return $query->row();
        }
        else
        {
            return FALSE;
        }
        
    }
    
    function verifica_seguidor($idUsuario, $idUserLogin)
    {
        $where = array('Usuario_idUsuario' => $idUserLogin, 'usuario_seguido' => $idUsuario, 'estado' => 'Y');
        $query = $this->db->where($where)->get('usuario_has_usuario');
        
        if($query->num_rows() == 1)
        {
            return TRUE; 
        }
    }
    
    function do_upload()
    {
	$config['upload_path']      = './upload/';
	$config['allowed_types']    = 'gif|jpg|png|jpeg';
	$config['encrypt_name']     = TRUE;

	$this->load->library('upload', $config);

	if ( ! $this->upload->do_upload('avatar'))
	{
            return $error = array('error' => $this->upload->display_errors());
        }
	else
	{
            $data   = array('upload_data' => $this->upload->data());
            
            $config['source_image']	= $data['upload_data']['full_path'];
            $config['new_image']        = './upload/thumbs/' . $data['upload_data']['file_name'];
            $config['create_thumb']     = FALSE;
            $config['maintain_ratio']   = TRUE;
            $config['width']            = 100;
            $config['height']           = 100;
            
            $this->load->library('image_lib', $config); 
            $this->image_lib->resize();
            
            $this->db->update('usuario', array('avatar' => $data['upload_data']['file_name']), array('idUsuario'=>$this->session->userdata('idUsuario')));
	}
    }
}


/* End of file usuario_model.php */
/* Location: ./application/models/usuario_model.php */
